/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.edu.upc.dew.proyecto.controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import pe.edu.upc.dew.proyecto.model.Medico;
import pe.edu.upc.dew.proyecto.model.Paciente;
import pe.edu.upc.dew.proyecto.model.Persona;
import pe.edu.upc.dew.proyecto.model.Usuario;
import pe.edu.upc.dew.proyecto.service.PersonaService;
import pe.edu.upc.dew.proyecto.service.UsuarioService;

/**
 *Controladora que maneja el login. Segun el tipo de usuario que haya ingresado
 * esta lo redirige a los resultados del paciente o del médico
 * @author Fernando
 */
public class loginDo implements Controller {
    private PersonaService personaService;
    private UsuarioService usuarioService;
    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * Implementa una busqueda del objeto persona y luego redirecciona a una de
     * las pa´ginas de resultados. utiliza una cookie para persistencia.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp)     throws Exception {
        resp.setContentType("text/html");
        Usuario usuario = null;
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String copersona = req.getParameter("copersona");

        usuario = usuarioService.getUsuarioPorUsername(username);
        
        if (usuario==null){
            req.getRequestDispatcher("index.htm").forward(req, resp);
        }
        else{
            if (usuario.getPassword().equals(password)){
                Persona persona = personaService.getPersonaPorUsername(username);
                if (persona  instanceof Paciente ){
                    copersona = String.valueOf(persona.getCoPersona());
////                        req.setAttribute("copersona", copersona);
////
////                        Cookie cookie = new Cookie("copersona",copersona);
////                        cookie.setValue(copersona);
////                        cookie.setMaxAge(3600);
                        Cookie[] cos = req.getCookies();
                        cos[0].setComment(copersona);
                    req.getRequestDispatcher("ResultadosPaciente.htm").forward(req, resp);

                }
                else{
                    if (persona  instanceof Medico ){
                        copersona = String.valueOf(persona.getCoPersona());
////                        req.setAttribute("copersona", copersona);
////
////                        Cookie cookie = new Cookie("copersona",copersona);
////                        cookie.setValue(copersona);
////                        cookie.setMaxAge(3600);
                        Cookie[] cos = req.getCookies();
                        cos[0].setComment(copersona);


                        req.getRequestDispatcher("resultadosMedico.htm").forward(req, resp);
                    }
                    else{
                        req.getRequestDispatcher("index.htm").forward(req, resp);
                    }
                }
            }
            else{
                req.getRequestDispatcher("index.htm").forward(req, resp);
            }
        }

        
        return null; // new ModelAndView("loginDo", "loginDo" , usuario );
    } 

    public void setUsuarioService(UsuarioService usuarioService){
        this.usuarioService = usuarioService;
    }
    public void setPersonaService(PersonaService personaService){
        this.personaService = personaService;
    }
    
    
}
